
#include <iostream>
#include "ProcessPool.h"
#include <ctime>
#include <cstdlib>
#include <unistd.h>

using namespace ZMH;

void Test()
{
    std::cout << "正在执行 Test 任务" << std::endl;
}

void upload()
{
    std::cout << "正在执行 upload 任务" << std::endl;
}

void Download()
{
    std::cout << "正在执行 Download 任务" << std::endl;
}

int main()
{
    srand((unsigned int)time(nullptr));

    // 本进程池 目前仅支持void()类型的函数
    int n = 5;
    process_pool procpool(n,{Test,upload,Download});

    for(int i = 0;i < 5;i++)
    {
        // 自动生成任务码
        int code = rand() % procpool.task_size();
        // 父进程发送任务码
        int ret_cnt = procpool.send(code);
        if(ret_cnt == -1)
        {
            std::cerr << "父进程发送文件失败，错误码是:" << errno << std::endl;
            continue;
        }
        // 父进程每隔1秒，派发一次任务
        sleep(1);
    }
    return 0;
}
